언팩킹(unpacking)은 리스트, 튜플, 배열 등 반복 가능한 객체의 내부 요소를 하나씩 풀어서 개별 변수나 위치에 할당하거나 삽입하는 과정을 의미한다.
# 리스트 언팩킹
x, y, z = [1, 2, 3] # x=1, y=2, z=3
# 튜플 언팩킹
name, age = ("Alice", 30) # name="Alice", age=30
리스트나 튜플의 길이와 변수의 개수가 일치해야 하며, 그렇지 않으면 ValueError가 발생한다.
# 일부만 변수에 저장하고 나머지는 * 사용
head, *body, tail = [1, 2, 3, 4, 5]
# head=1, body=[2,3,4], tail=5
# 함수 호출 시 언팩킹
def add(a, b, c):
return a + b + c
args = [1, 2, 3]
add(*args) # 6
*
는 위치 기반 언팩킹에 사용되며, 함수 정의나 호출, 리스트 조합 등 다양한 용도에 활용된다.
import numpy as np
n = 8
# 잘못된 예: 배열 안에 배열이 들어감
a = np.array([0, 1, np.zeros(n)]) # dtype=object
# 올바른 예: 배열을 평평하게 결합
b = np.array([0, 1, *np.zeros(n)]) # dtype=float64
NumPy에서 *
를 사용하면 배열 내부의 값이 개별 원소로 처리되어 연산이나 배열 결합 시
보다 직관적인 데이터 구조를 만들 수 있다.